package cn.com.idmy.auth;

import cn.com.idmy.base.util.CfgUtil;
import org.jetbrains.annotations.Nullable;


public class AuthConfig {
    public static final String ID_KEY = "$ID$";
    public static final String ACCOUNT_TYPE_KEY = "$ACCOUNT_TYPE$";
    public static final String TOKEN_HEADER_ENABLED = "auth.tokenHeaderEnabled";
    public static final String TOKEN_HEADER_PREFIX = "auth.tokenHeaderPrefix";
    public static final String TOKEN_HEADER_NAME = "auth.tokenHeaderName";
    public static final String TOKEN_COOKIE_ENABLED = "auth.tokenCookieEnabled";
    public static final String TOKEN_COOKIE_NAME = "auth.tokenCookieName";
    public static final String TOKEN_BODY_ENABLED = "auth.tokenBodyEnabled";
    public static final String TOKEN_BODY_NAME = "auth.tokenBodyName";
    /**
     * 常量，表示一个 key 永不过期 （在一个 key 被标注为永远不过期时返回此值）
     */
    public static long NEVER_EXP = -1;
    /**
     * 常量，表示系统中不存在这个缓存（在对不存在的 key 获取剩余存活时间时返回此值）
     */
    public static long NOT_VALUE_EXP = 0;

    public static @Nullable String tokenHeaderPrefix() {
        return CfgUtil.getBoolean(TOKEN_HEADER_ENABLED) ? CfgUtil.getString(TOKEN_HEADER_PREFIX, "Bearer ") : null;
    }

    public static @Nullable String tokenHeaderName() {
        return CfgUtil.getBoolean(TOKEN_HEADER_ENABLED) ? CfgUtil.getString(TOKEN_HEADER_NAME, "Authorization") : null;
    }

    public static @Nullable String tokenCookieName() {
        return CfgUtil.getBoolean(TOKEN_COOKIE_ENABLED) ? CfgUtil.getString(TOKEN_COOKIE_NAME, "$tk$") : null;
    }

    public static @Nullable String tokenBodyName() {
        return CfgUtil.getBoolean(TOKEN_BODY_ENABLED) ? CfgUtil.getString(TOKEN_BODY_NAME, "$tk$") : null;
    }
}